Thema Datum  Von Nutzer Rating
Antwort
07.06.2021 15:42:06 Detleff
NotSolved
07.06.2021 16:55:25 Gast461
NotSolved
08.06.2021 11:05:45 Detleff
NotSolved
09.06.2021 09:41:57 Detleff
NotSolved
09.06.2021 15:28:03 Gast82810
NotSolved
09.06.2021 16:19:35 Ulrich
NotSolved
10.06.2021 09:24:18 Gast76414
NotSolved
11.06.2021 08:16:30 Ulrich
NotSolved
Rot unbefriedigenden Schnellschuss => besser
11.06.2021 09:16:22 Ulrich
NotSolved
11.06.2021 10:33:19 Detleff
NotSolved
11.06.2021 10:33:20 Detleff
NotSolved
11.06.2021 12:03:55 Ulrich
NotSolved
11.06.2021 12:50:28 Ulrich
Solved
14.06.2021 08:33:06 Detleff
Solved
14.06.2021 09:09:04 Ulrich
NotSolved
15.06.2021 11:25:52 Detleff
Solved
09.06.2021 17:28:56 xlKing
NotSolved
09.06.2021 17:48:05 xlKing
NotSolved
10.06.2021 15:14:19 Detleff
NotSolved
11.06.2021 08:13:10 Gast34775
NotSolved
11.06.2021 08:40:02 Gast43812
NotSolved
11.06.2021 10:34:30 Detleff
NotSolved

Ansicht des Beitrags:
Von:
Ulrich
Datum:
11.06.2021 09:16:22
Views:
493
Rating: Antwort:
  Ja
Thema:
unbefriedigenden Schnellschuss => besser

Hi,

nee, da muss doch gar keine Schleife! Was ich da gemacht habe gefällt mir nicht mehr wirklich! Mir gefällt dieser Code aus mehreren Gründen viel besser:

Option Explicit


Private Sub TextBox1_Change()
    With TextBox1
        If Right(.Text, 4) Like "A###" Then
            Application.EnableEvents = False
            .Value = ersetze_Abkuerzungen(.Text)
            Application.EnableEvents = True
            Cells(1, 1).Value = .Text
        End If
    End With
End Sub
 
 
Function ersetze_Abkuerzungen(ByVal txt As String) As String
Static Dic As Object
    
    'Alle Abkurzungen und Langtexte in ein Dictionary
    If Dic Is Nothing Then
        Set Dic = CreateObject("Scripting.Dictionary")
        Dic.Add "A123", "Kunde anschreiben"
        Dic.Add "A124", "blabla4"
        Dic.Add "A125", "blabla5"
        'Dic.Add ..., ...
    End If
    
    'wenn A### am Ende des Textes im Dictionary, dann ersetzen:
    If Dic.Exists(Right(txt, 4)) Then
        txt = Mid(txt, 1, Len(txt) - 4) & Dic(Right(txt, 4))
    End If

    ersetze_Abkuerzungen = txt
End Function

Gründe:

1. Viel übersichtlicher, sofort im Code erkennbar, welche Abkürzung zu welchem Langtext gehört

2. Leichter anzupassen was das Erweitern / Ändern der Abkürzungen - Langtexte betrifft.
        Für das Erweitern einfach eine solche Zeile hinzufügen:
        Dic.Add Abkürzung, Langtext
        dabei sind "Abkürzung" und "Langtext" wieder Zeichenketten (Strings, entsprechend mit " zu versehen).

2. keine Schleife

3. Das Dictionary wird nur einmalig in einer Instanz der Userform gefüllt (static...!). (Wenn dir das jetzt nichts sagt, dann ist das ok :-) )

4. Insgesamt relativ wenig Code, der bei einem Tastendruck ausgeführt wird.

 

Und ich find cool, dass es bei mir gut läuft - warum auch immer es neulich nicht so wollte.

Grüße Ulrich


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
07.06.2021 15:42:06 Detleff
NotSolved
07.06.2021 16:55:25 Gast461
NotSolved
08.06.2021 11:05:45 Detleff
NotSolved
09.06.2021 09:41:57 Detleff
NotSolved
09.06.2021 15:28:03 Gast82810
NotSolved
09.06.2021 16:19:35 Ulrich
NotSolved
10.06.2021 09:24:18 Gast76414
NotSolved
11.06.2021 08:16:30 Ulrich
NotSolved
Rot unbefriedigenden Schnellschuss => besser
11.06.2021 09:16:22 Ulrich
NotSolved
11.06.2021 10:33:19 Detleff
NotSolved
11.06.2021 10:33:20 Detleff
NotSolved
11.06.2021 12:03:55 Ulrich
NotSolved
11.06.2021 12:50:28 Ulrich
Solved
14.06.2021 08:33:06 Detleff
Solved
14.06.2021 09:09:04 Ulrich
NotSolved
15.06.2021 11:25:52 Detleff
Solved
09.06.2021 17:28:56 xlKing
NotSolved
09.06.2021 17:48:05 xlKing
NotSolved
10.06.2021 15:14:19 Detleff
NotSolved
11.06.2021 08:13:10 Gast34775
NotSolved
11.06.2021 08:40:02 Gast43812
NotSolved
11.06.2021 10:34:30 Detleff
NotSolved